/*****************************
 *@file: BaseCharacterUI
 *@author: 陈吕唐
 *@desc: 基础战斗角色实体视图控制
 *@date: 2024-03-18	10:06
 *****************************/
import { _decorator, Label, ProgressBar } from 'cc';
import { BaseCharacter } from './BaseCharacter';
import { BaseCharacterPhysics } from './BaseCharacterPhysics';
import IBaseBulletValue from './bullet/IBaseBulletValue';
import FontSingle from './FontSingle';
const { ccclass, property } = _decorator;

@ccclass('BaseCharacterUI')
export class BaseCharacterUI extends BaseCharacterPhysics {
    /****************************************************************************************************************
     *Readonly 常量
     ****************************************************************************************************************/
    /****************************************************************************************************************
     *Property 定义变量
     ****************************************************************************************************************/
    /***************************************************************
     *PropertyUI 引用的控件
     ***************************************************************/
    @property({ group: { name: '基础战斗单位视图', id: '2' }, type: Label, tooltip: `当前生命值文本组件` })
    private hpLabel: Label = undefined!;

    @property({ group: { name: '基础战斗单位视图', id: '2' }, type: Label, tooltip: `当前生命值进度条组件` })
    private hpProgress: ProgressBar = undefined!;
    /****************************************************************************************************************
    * Lifecycle 生命周期相关方法
    ****************************************************************************************************************/
    /****************************************************************************************************************
     * Public 公有方法
     ****************************************************************************************************************/
    /****************************************************************************************************************
     * private 私有方法
     ****************************************************************************************************************/
    public startGame(): void {
        super.startGame();
        this.updateHp(this.hp);
    }

    protected updateHp(value: number): void {
        super.updateHp(value);

        if (this.hpLabel) {
            this.hpLabel.string = `${value}/${this.maxHp}`;
        }

        if (this.hpProgress) {
            this.hpProgress.progress = value / this.maxHp;
        }
    }

    public override takeDamage(bullet: IBaseBulletValue, source?: BaseCharacter): number {
        let n = super.takeDamage(bullet, source);
        FontSingle.single.show(`${n}`, this.node);
        return n;
    }
    /****************************************************************************************************************
     * Property Get && Set 属性的 get && set 函数
     ****************************************************************************************************************/

}


